package Model;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

/**
 * 
 * @author mada
 * Classe FichierManager qui s'occupe d'enregistrer et de recuperer
 * dans le fichier texte tout les contacts ajoutés
 *
 */

public class FichierManager {
	
	private String path;
	private FileWriter fichier;
	
	public FichierManager(String chemin)
	{
		path = chemin;
	}
	
	public FichierManager(){
	}
	
	public void setPath(String PATH)
	{
		path = PATH;
	}
	
	public void ajouterContact(Contact contact) throws IOException
	{
		fichier = new FileWriter(new File(path), true);
		
		for (int i=0 ; i<8 ; i++)
		{
			switch(i)
			{
			case 0:
				fichier.append(contact.getLastName()+"\r\n");
				break;
				
			case 1:
				fichier.append(contact.getFirstName()+"\r\n");
				break;
				
			case 2:
				fichier.append(contact.getHmAdd()+"\r\n");
				break;
				
			case 3:
				fichier.append(contact.getCmpAdd()+"\r\n");
				break;
				
			case 4:
				fichier.append(contact.getPhone()+"\r\n");
				break;
			
			case 5:
				fichier.append(contact.getProfPhone()+"\r\n");
				break;
		
			case 6:
				fichier.append(contact.getMail()+"\r\n");
				break;
			case 7:
				fichier.append(contact.getGroupe()+"\r\n");
			}
		}
			fichier.close();
	}
	
	public static List<Contact> recupererContact() throws FileNotFoundException
	{
		List<Contact> liste = new ArrayList<Contact>();
		List<String> ligne = new ArrayList<String>();
		Scanner scanner = new Scanner(new File("fichier.txt"));
		
		while(scanner.hasNextLine())
		{
			ligne.add(scanner.nextLine());
		}
		scanner.close();
		
		for (int i=0 ; i<ligne.size() ; i+=8)
		{
			Contact unContact = new Contact();
			
			for (int j=0 ; j<8 ; j++)
			{
				if(j==0)
					unContact.setLastName(ligne.get(i));
				if(j==1)
					unContact.setFirstName(ligne.get(i+1));	
				if(j==2)
					unContact.setHmAdd(ligne.get(i+2));
				if(j==3)
					unContact.setCmpAdd(ligne.get(i+3));
				if(j==4)
					unContact.setPhone(ligne.get(i+4));
				if(j==5)
					unContact.setProfPhone(ligne.get(i+5));
				if(j==6)
					unContact.setMail(ligne.get(i+6));
				if(j==7)
					unContact.setGroupe(ligne.get(i+7));
			}
			
			liste.add(unContact);
		}
		return liste;
	}
	
	
	public static Contact rechercherContact(String nomPrenom) {
		List<Contact> contacts = new ArrayList<Contact>();
		try {
			contacts=recupererContact();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String name[] = nomPrenom.split(" ");
		Iterator<Contact> itr = contacts.iterator();
		while (itr.hasNext()) {
			Contact contact = itr.next();
			if (contact.getLastName().equals(name[0]) && contact.getFirstName().equals(name[1])) 
				return contact;	
			}
		return null;
}
	
	public void supprimerContact(Contact cont) throws IOException{
	
		List<Contact> contacts = new ArrayList<Contact>();
		
		try {
			contacts=recupererContact();
			System.out.println(contacts);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println("le contacts recherch�� est "+cont);
		int indice;
		for (int i=0; i<contacts.size(); i++){
			if(contacts.get(i).getLastName().equals(cont.getLastName())&& contacts.get(i).getFirstName().equals(cont.getFirstName())){
				indice=i;
				System.out.println("Nom: "+ contacts.get(i).getFirstName()+" indice "+i );
				contacts.remove(indice);
				
			}
		}

		
		FileWriter fw=new FileWriter("fichier.txt",false);

		for(int i=0; i<contacts.size(); i++){
			
		fw.write(contacts.get(i).getLastName()+"\r\n");
		fw.write(contacts.get(i).getFirstName()+"\r\n");
		fw.write(contacts.get(i).getHmAdd()+"\r\n");
		fw.write(contacts.get(i).getCmpAdd()+"\r\n");
		fw.write(contacts.get(i).getPhone()+"\r\n");
		fw.write(contacts.get(i).getProfPhone()+"\r\n");
		fw.write(contacts.get(i).getMail()+"\r\n");
		fw.write(contacts.get(i).getGroupe()+"\r\n");
		
		}
		fw.close();
	}
	
}
